#ifndef __DEFINED_H__
#define __DEFINED_H__

#include <stm32f10x.h> 
#include <stdio.h> 

#define uchar u8
#define uint  u16
#define ulong u32
/*---------------------------------------------------------------------------*/
/*------------------------------- 条件编译  ---------------------------------*/
/*---------------------------------------------------------------------------*/
#define DEBUG	1//串口1 用于定制JD-uart转TCP接口	   DEBUG：<0用于Uart转TCP;   ==0用485;    >0用串口打印;
//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
//设备信息的固定值
#define DEVICE_ID    "WHGX100"  //硬件ID
#define DEVICE_NAME 	"AKDA0402"			//设备名称
#define hard_version 	"PLC-V1.0"		//硬件版本
#define Soft_version 	"_V1.01"				//版本说明

#define PROD_KEY    "AKDA/"             //产品ID
#define PROD_ID     "112655"             //产品ID
//#define SN          "201909120002"      //标记名称也是鉴权
#define REG_CODE    "Pw0oSFI2lJFaK54r"  //注册码
#define API_ADDR    "api.heclouds.com"//登录的API
#define USER    "admin"             //产品ID

#define Defult_DeaviceKey 	"0123456789"
#define CLIENTID 		"WH1234567895"
//#define PASSWORD     "admin"             //产品ID
#define OPENSHA256	0

#define TO_HTONS_PORT		8786		//收发均使用固定端口号
#define SELF_HTONS_PORT	8786		//自己的
#define DESPORT	 	""
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
//构建一个u16和2位u8的共用体
typedef union 
{
	u16	intData;
	u8	charData[2];	
}	afantiU;

//构建一个u32和2位u16的共用体
typedef union 
{
	u32	LongData;
	afantiU	IntData[2];	
}	afantiU32b;

//----------红外检测通知-------
typedef enum
{
	IR_DEFAULT_0=0,		//不可进出
	IR_FORWARD_IN=1,	//正向进入
	IR_REVERSE_OUT=2,	//反向出去
}IR_DIR_POST_TYPE;

//------电机动作状态应答通知------
typedef enum
{
	MT_AT_NULL=				0,		//无动作
	MT_AT_FORWARD_P= 10,		//正向开
	MT_AT_REVERSE_N= 11,		//反向开
	MT_AT_CLOSE=		 20,		//关门
	MT_AT_KEEP_MOD=	 30,	  //常开
	MT_AT_KEEP_CANEL=40,		//取消常开
	MT_AT_STA=			 50, 	//查询状态	
}SOCKET_AT_TYPE;   


//-----电机状态通知-------
typedef enum
{		
	MT_STA_0=0xFF,	//无状态
	MT_STA_CLOSE=0,	//关状态
	MT_STA_OPEN=1,	//开状态
}MOTOR_STA_POST_TYPE;  

//-----报警通知-------
typedef enum
{		
	ALARM_0=0,	//无报警
	ALARM_FFCR=1,	//非法闯入
	ALARM_FXCR=2,	//反向闯入
	ALARM_ZYTD=3,	//占用通道超时
	ALARM_RYWS=4,	//人员尾随
	ALARM_KEY=5,	//人为按键触发
}ALARM_POST_TYPE; 

//-----超时通知-------
typedef enum
{		
	DL_AT_NULL=0,	 //无超时
	DL_MT_AT=1,	   //超时关门
}MTDL_POST_TYPE; 

//------------------------------------

//上报通知结构体
typedef struct
{	
	SOCKET_AT_TYPE  				Socket_MT_Action; //电机动作
	IR_DIR_POST_TYPE				Post_IR_Sta;		  //红外状态
	MOTOR_STA_POST_TYPE			Post_MT_Sta;		  //电机状态	
	ALARM_POST_TYPE					Post_Alarm;       //有报警
	MTDL_POST_TYPE					post_MTDL;			  //有超时
}MT_POST_STR;


//------------------------------------

//
typedef struct
{	
	u16 ttl;   		//超时
	u8  state;		//状态
	u8  data[10]; //数据
	u8  cmd;			//指令
}TCP_Rx_STR;

typedef struct
{
    //配置的值
    //uip_ipaddr_t 	ServersIP;	//服务器IP
    u16 ServersPort;			//服务器端口
	char IpString[20];
	char PortString[10];
	char Clientidstring[20];
	char Username[10];
	char Password[10];
    //工作需要
    u8 	SendStatus;				//发送状态: 未同步、忙等待、空闲
    u8 	Watchdog_SendOK;	//喂狗包是否发送
    u16  WaitPacketTtl;		//
    u8  OutTime_num;			//
    u8  Err_num;					//
} TypeEquipmentUDPHandle;

#define MAXMETERNUM  8
typedef struct 
{
	u8  decimal; 
	u32 interger; 
}FIVEBYTE_FLOAT;

typedef struct 
{
	char MeterSn[8]; 
	u32  Status;
	u32   Flowrate;
	FIVEBYTE_FLOAT Total_flow;
	FIVEBYTE_FLOAT Total_fd_flow;
	FIVEBYTE_FLOAT Total_bk_flow;
	u16 WaterPressure;
}METERDATA_FLOAT;

typedef struct 
{
	char MeterSn[8]; 
	u32  Status;
	u32   Flowrate;
	double Total_flow;
	double Total_fd_flow;
	double Total_bk_flow;
	u16 WaterPressure;
}METERDATA_DOUBLE;

typedef struct 
{
	char DeviceSn[6]; 
	char MeterSn[MAXMETERNUM][6];   //下挂6种传感器
}CONFIG;

typedef struct 
{
	METERDATA_FLOAT MeterDataFloat[3];
	METERDATA_DOUBLE MeterDataDouble[3];
}RTUDATA;
void Buzzer_timers_add(u8 i);
void delay_ms(u16 ms);
#endif















